<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 对象解构赋值的代码阅读
        //对象的解构赋值与数组不同，要求变量必须与属性同名，才能取到正确的值。
        //let {name, age} = {name:'张三', age:20};
        let { age, name } = { name: '张三', age: 20 };
        let { sex } = { name: '张三', age: 20 };
        console.log(name); // 张三
        console.log(age);  // 20
        console.log(sex);  // undefined

        //如果变量名与属性名不一致，必须写成下面这样
        let { email: em, password: ps } = { email: 'zs@163.com', password: '123456' };
        //如上代码email和password都是匹配的模式，em才是变量。
        console.log(em);    // zs@163.com
        console.log(ps);    // 123456
        // console.log(email); // email is not defined

        //定义一个书的信息
        const obj = {
            book: [
                'JavaScript权威指南',
                { author: '小淘', price: 132 }
            ]
        };
        // 通过解构赋值获取上面书中的三个信息
        let {book:[title,{author,price}]} = obj;
        console.log(title,author,price);
        // JavaScript权威指南 小淘 132

        // 将两个变量值交换
        let a = 10;
        let b = 20;
        [b,a] = [a,b]; // 通过解构赋值实现将两个变量值交换
        console.log(a, b);
    </script>
</body>

</html>